/**
 * 将扁平菜单数据转换为树形结构
 * @param flatData 扁平菜单数据
 * @returns 树形菜单结构
 */
export function convertToTree(flatData: any[]) {
  // 创建映射表
  const map = new Map<number, any>();
  const tree: any[] = [];

  // 第一遍遍历：创建节点映射
  flatData.forEach((item) => {
    map.set(item.id, { ...item, children: [] });
  });

  // 第二遍遍历：构建树结构
  flatData.forEach((item) => {
    const node = map.get(item.id);
    if (item.parentId === null) {
      tree.push(node);
    } else {
      const parent = map.get(item.parentId);
      if (parent) {
        parent.children.push(node);
      }
    }
  });

  return tree;
}

export default { convertToTree };

// 使用示例
// import { convertToTree } from '@/utils/menuUtils';
// const meunList = convertToTree(meunData);
